//+------------------------------------------------------------------+ //| 4TF HAS2 Bar.mq4 | //| Add-on to be used with 4TF HAS Bar.mq4 | //| Modified by Matsu, from #MTF Supertrend Bar.mq4 | //| Copyright © 2006, Eli hayun | //| http://www.elihayun.com | //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, Eli hayun" #property link "http://www.elihayun.com" #property indicator_separate_window #property indicator_minimum 0 #property indicator_maximum 5 #property indicator_buffers 8 #property indicator_color1 Red #property indicator_color2 Blue #property indicator_color3 Red #property indicator_color4 Blue #property indicator_color5 Red #property indicator_color6 Blue #property indicator_color7 Red #property indicator_color8 Blue //---- parameters extern int MaMetod = 2; extern int MaPeriod = 6; extern int MaMetod2 = 3; extern int MaPeriod2 = 2; extern int BarWidth = 0; extern color UpBarColor = Blue; extern color DownBarColor = Red; extern int MaxBars=500; //extern color TextColor = White; double Gap = 1; // Gap between the lines of bars //---- buffers double buf4_up[]; double buf4_down[]; double buf3_up[]; double buf3_down[]; double buf2_up[]; double buf2_down[]; double buf1_up[]; double buf1_down[]; double haOpen; double haClose; /* extern int Period_1 = 15; extern int Period_2 = 30; extern int Period_3 = 60; extern int Period_4 = 240; extern bool AutoDisplay = false; */ string shortname = ""; bool firstTime = true; int ArrSize = 112;//167;//158;//159; int UniqueNum = 228; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //SetAutoDisplay(); firstTime = true; //IndicatorShortName(shortname); //---- indicators SetIndexStyle(0,DRAW_ARROW,0,BarWidth,UpBarColor); SetIndexArrow(0,ArrSize); SetIndexBuffer(0,buf4_up); SetIndexEmptyValue(0,0.0); SetIndexStyle(1,DRAW_ARROW,0,BarWidth,DownBarColor); SetIndexArrow(1,ArrSize); SetIndexBuffer(1,buf4_down); SetIndexEmptyValue(1,0.0); SetIndexStyle(2,DRAW_ARROW,0,BarWidth,UpBarColor); SetIndexArrow(2,ArrSize); SetIndexBuffer(2,buf3_up); SetIndexEmptyValue(2,0.0); SetIndexStyle(3,DRAW_ARROW,0,BarWidth,DownBarColor); SetIndexArrow(3,ArrSize); SetIndexBuffer(3,buf3_down); SetIndexEmptyValue(3,0.0); SetIndexStyle(4,DRAW_ARROW,0,BarWidth,UpBarColor); SetIndexArrow(4,ArrSize); SetIndexBuffer(4,buf2_up); SetIndexEmptyValue(4,0.0); SetIndexStyle(5,DRAW_ARROW,0,BarWidth,DownBarColor); SetIndexArrow(5,ArrSize); SetIndexBuffer(5,buf2_down); SetIndexEmptyValue(5,0.0); SetIndexStyle(6,DRAW_ARROW,0,BarWidth,UpBarColor); SetIndexArrow(6,ArrSize); SetIndexBuffer(6,buf1_up); SetIndexEmptyValue(6,0.0); SetIndexStyle(7,DRAW_ARROW,0,BarWidth,DownBarColor); SetIndexArrow(7,ArrSize); SetIndexBuffer(7,buf1_down); SetIndexEmptyValue(7,0.0); SetIndexLabel(0,NULL); SetIndexLabel(1,NULL); SetIndexLabel(2,NULL); SetIndexLabel(3,NULL); SetIndexLabel(4,NULL); SetIndexLabel(5,NULL); SetIndexLabel(6,NULL); SetIndexLabel(7,NULL); IndicatorDigits(0); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //SetAutoDisplay(); // shortname = "# Forex Freedom("+Period_1+","+Period_2+","+Period_3+","+Period_4+")"; //firstTime = true; //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); int i=0, y15m=0, y4h=0, y1h=0, y30m=0, yy; int limit=Bars-counted_bars; int Period_1, Period_2, Period_3, Period_4; switch(Period()) { case 1: Period_1=1; Period_2=5; Period_3=15; Period_4=30; break; case 5: Period_1=5; Period_2=15; Period_3=30; Period_4=60; break; case 15: Period_1=15; Period_2=30; Period_3=60; Period_4=240; break; case 30: Period_1=30; Period_2=60; Period_3=240; Period_4=1440; break; case 60: Period_1=60; Period_2=240; Period_3=1440; Period_4=10080; break; case 240: Period_1=240; Period_2=1440; Period_3=10080; Period_4=43200; break; case 1440: Period_1=1440; Period_2=10080; Period_3=43200; Period_4=43200; break; case 10080: Period_1=10080; Period_2=43200; Period_3=43200; Period_4=43200; break; case 43200: Period_1=43200; Period_2=43200; Period_3=43200; Period_4=43200; break; } shortname = "MTF HAS 2("+Period_1+","+Period_2+","+Period_3+","+Period_4+")"; IndicatorShortName(shortname); datetime TimeArray_4H[], TimeArray_1H[], TimeArray_30M[], TimeArray_15M[]; //---- // if (firstTime || NewBar()) if (firstTime) { firstTime = false; /* int win = UniqueNum; // WindowFind(shortname); double dif = Time[0] - Time[1]; for (int ii=ObjectsTotal()-1; ii>-1; ii--) { if (StringFind(ObjectName(ii),"FF_"+win+"_") >= 0) ObjectDelete(ObjectName(ii)); else ii=-1; } double shift = 0.2; for (ii=0; ii<4; ii++) { string txt = "??"; double gp; switch (ii) { case 0: txt = tf2txt(Period_1); gp = 1 + shift; break; case 1: txt = tf2txt(Period_2); gp = 1 + Gap + shift; break; case 2: txt = tf2txt(Period_3); gp = 1 + Gap*2 + shift; break; case 3: txt = tf2txt(Period_4); gp = 1 + Gap*3 + shift; break; } string name = "FF_"+win+"_"+ii+"_"+txt; ObjectCreate(name, OBJ_TEXT, WindowFind(shortname), iTime(NULL,0,0)+dif*3, gp); ObjectSetText(name, txt,8,"Arial", TextColor); } */ } ArrayCopySeries(TimeArray_4H,MODE_TIME,Symbol(),Period_4); ArrayCopySeries(TimeArray_1H,MODE_TIME,Symbol(),Period_3); ArrayCopySeries(TimeArray_30M,MODE_TIME,Symbol(),Period_2); ArrayCopySeries(TimeArray_15M,MODE_TIME,Symbol(),Period_1); for(i=0, y15m=0, y4h=0, y1h=0, y30m=0;i